/**
 * 数组的索引从0开始
 *
 * 获取数组的其中的一个值，调用方法
 * 数组对象名[索引值]
 *
 * 获取数组的长度
 * 数组对象名.length
 *
 *例外，判断数据的类型可以用 instanceof关键字来判断
 * 数组名 instanceof Array
 * 返回的结果则是布尔值
 *
 */

//创建的方式，第一种则是通过构造函数定义；
const arr = new Array();
/**
 * 注意上述代码中的括号内写上数字，用于来定义该数组的长度，创建多少个存储数据的位置
 * 也可以直接在里面写上我们要存储的数据
 */

/**
 * 创建的方式，第二种则是字面量的方式创建定义
 * 注意
 * 1.需要用中括号包括这些数组的元素
 * 2.元素之间需要用逗号隔开
 */
const arr2 = ["数据一", "数据二", "数据三"];


/**
 * 数组的遍历元素
 * 除了普通for，之外，还有forEach方法，如下所示
 * @param {Object} e 当前的元素
 * @param {Object} i 当前的索引
 * @param {Object} arr 数组本身
 */
arr2.forEach(function (e, i, arr) {
	console.log(e);
})


/**
 * 该循环可以理解为java中的增强for
 * @param {Object} let s of arr2 数组中的某个元素
 */
for (let s of arr2) {
	console.log(s);
}

//使用该for in 可以遍历对象的属性
for (let p in obj) {
	console.log(p);
}


console.log("=====================");

// 数组的操作
arr2.unshift("我来组成头部"); //从开头添加元素
arr2.push("你好世界"); //从结尾添加元素
arr2.shift(); //删除开头的元素，并返回对应元素
arr2.pop(); //删除末尾的元素，并返回对应元素
arr2.concat(arr); //数组的拼接，两个数组拼接在一起
arr2.filter(e => e > 2); //用于过滤数组, 返回指定条件的元素
arr2[0] = "我是新的值"; //数组指定下标元素修改
/**
 * 数组截取的方法
 * 数组名.slice(截取开始元素索引,截取结束的索引);
 * 注意事项：
 * 1.括号里面的参数，都是数组元素的索引号，并不是数组的位置
 * 2.截取的结果会返回新的数组，包包含截取的元素，但不会包含截取结束的元素，也就是说左闭右开
 */
arr2.slice(0, 2); //数组截取方法
/**
 * 数组名.splice(起始位置，删除的元素个数);
 */
arr2.splice(0, 2); //删除数组元素方法
/**
 * 数组名.splice(插入位置,0,插入类型);
 */
arr2.splice(0, 0, 2); //插入数组元素方法
/**
 * 数组名.splice(替换初始的位置，替换个数，替换元素)；
 */
arr2.splice(0, 2, 5, 6); //替换个数，替换元素
arr2.reverse(); //数组降序排序方法-该方法有缺陷，不推荐使用
arr2.sort(function (a, b) {
	return a - b; //升序
	//return b-1;//降序
}); //数组的排序方法
/**
 * 数组元素查询
 * 数组名。indexOf(元素);从头部开始查询数组元素方法
 * 数组名.indexOf(查询内容,起始查询位置);
 * lastIndexO同上，只不过是从结尾开始
 */

/**
 * 数组的转换
 * 此类方法多，常用得有
 * 数组名.toString()方法，将数组转换成字符串，元素之间会以,隔开
 *
 * 数组名.join(元素之间隔开的符号);将数组转成字符串，元素之间会以参数的符号隔开
 *
 */
